/*
 * @lc app=leetcode.cn id=LCP 61 lang=java
 * @lcpr version=30204
 *
 * [LCP 61] 气温变化趋势
 *
 * https://leetcode.cn/problems/6CE719/description/
 *
 * algorithms
 * Easy (61.66%)
 * Likes:    24
 * Dislikes: 0
 * Total Accepted:    18.7K
 * Total Submissions: 27.1K
 * Testcase Example:  '[21,18,18,18,31]\n[34,32,16,16,17]'
 *
 * 力扣城计划在两地设立「力扣嘉年华」的分会场，气象小组正在分析两地区的气温变化趋势，对于第 `i ~ (i+1)` 天的气温变化趋势，将根据以下规则判断：
 * - 若第 `i+1` 天的气温 **高于** 第 `i` 天，为 **上升** 趋势
 * - 若第 `i+1` 天的气温 **等于** 第 `i` 天，为 **平稳** 趋势
 * - 若第 `i+1` 天的气温 **低于** 第 `i` 天，为 **下降** 趋势
 * 
 * 已知 `temperatureA[i]` 和 `temperatureB[i]` 分别表示第 `i` 天两地区的气温。
 * 组委会希望找到一段天数尽可能多，且两地气温变化趋势相同的时间举办嘉年华活动。请分析并返回两地气温变化趋势**相同的最大连续天数**。
 * > 即最大的 `n`，使得第 `i~i+n` 天之间，两地气温变化趋势相同
 * 
 * **示例 1：**
 * >输入：
 * >`temperatureA = [21,18,18,18,31]`
 * >`temperatureB = [34,32,16,16,17]`
 * >
 * >输出：`2`
 * >
 * >解释：如下表所示， 第 `2～4` 天两地气温变化趋势相同，且持续时间最长，因此返回 `4-2=2`
 * 
 * ![image.png](https://pic.leetcode-cn.com/1663902654-hlrSvs-image.png){:width=1000px}
 * 
 * 
 * **示例 2：**
 * >输入：
 * >`temperatureA = [5,10,16,-6,15,11,3]`
 * >`temperatureB = [16,22,23,23,25,3,-16]`
 * >
 * >输出：`3`
 * 
 * **提示：**
 * - `2 <= temperatureA.length == temperatureB.length <= 1000`
 * - `-20 <= temperatureA[i], temperatureB[i] <= 40`
 * 
 */

// @lcpr-template-start

// @lcpr-template-end
// @lc code=start
class SolutionLCP61 {
    public static void main(String[] args) {
        int[] a = { 5, 10, 16, -6, 15, 11, 3 };
        int[] b = { 16, 22, 23, 23, 25, 3, -16 };
        System.out.println(new SolutionLCP61().temperatureTrend(a, b));
    }

    public int temperatureTrend(int[] temperatureA, int[] temperatureB) {
        int length = temperatureA.length;

        int[] temp = new int[length - 1];
        for (int i = 0; i < length - 1; i++) {
            int a = temperatureA[i] < temperatureA[i + 1] ? 1 : temperatureA[i] > temperatureA[i + 1] ? 2 : 3;
            int b = temperatureB[i] < temperatureB[i + 1] ? 1 : temperatureB[i] > temperatureB[i + 1] ? 2 : 3;

            temp[i] = a == b ? 1 : 0;
        }
        int res = 0;
        for (int i = 0; i < temp.length; i++) {
            int number = 0;
            while (i < temp.length && temp[i] == 1) {
                number++;
                i++;
            }
            res = Math.max(res, number);
        }
        return res;
    }
}
// @lc code=end

/*
 * // @lcpr case=start
 * // [21,18,18,18\n[34,32,16,16,17]`>\n
 * // @lcpr case=end
 * 
 * // @lcpr case=start
 * // [5,10,16,-6,15,11\n[16,22,23,23,25,3,-16]`>\n
 * // @lcpr case=end
 * 
 */
